<?php

namespace App\Utility\Traits;

trait JsonReturn{
      /**
     * 返回json格式数据 作用为检查程序是否终止 并抛出异常
     * @param bool $res 所需判断的结果 
     * @param array $Params 参数列表 
     */
    public function result($res=true, $Params=[])
    {
        if($res){
            $ResJson['code'] = 200;
            if(isset($Params['data'])){
                $ResJson['data'] = $Params['data'];
            }
        }else{
            $ResJson['code'] = isset($Params['code']) ? $Params['code'] : 400;
            $ResJson['msg']  = isset($Params['msg']) ? $Params['msg'] : '未定义错误';
        }
        $response = json_encode($ResJson, JSON_UNESCAPED_UNICODE);
        throw new \Exception($response, 200);
    }

    /**
     * 返回json格式数据 作用为检查程序是否终止 并抛出异常
     * @param bool $res 所需判断的结果 
     * @param array $Params 参数列表 
     */
    public function abort($res = false, $Params)
    {
        if(!$res){
            $ResJson['code'] = isset($Params['code']) ? $Params['code'] : 400;
            $ResJson['msg']  = isset($Params['msg']) ? $Params['msg'] : '未定义错误';
            $response = json_encode($ResJson, JSON_UNESCAPED_UNICODE);
            throw new \Exception($response, 200);
        }
    }

    /**
     * 返回json格式数据 作用为检查程序是否终止 并抛出异常
     * @param array $Params 参数列表 
     */
    public function error($Params)
    {
        $ResJson['code'] = isset($Params['code']) ? $Params['code'] : 400;
        $ResJson['msg']  = isset($Params['msg']) ? $Params['msg'] : '未定义错误';
        $response = json_encode($ResJson, JSON_UNESCAPED_UNICODE);
        throw new \Exception($response, 200);
    }

    /**
     * 返回json格式数据 作用为检查程序是否终止 并抛出异常
     * @param array $Params 参数列表 
     */
    public function json($Params)
    {
        $ResJson['code'] = isset($Params['code']) ? $Params['code'] : 200;
        $ResJson['msg']  = isset($Params['msg']) ? $Params['msg'] : '';
        $ResJson['data'] = isset($Params['data']) ? $Params['data'] : null;
        $response = json_encode($ResJson, JSON_UNESCAPED_UNICODE);
        throw new \Exception($response, 200);
    }

    /**
     * 返回json格式数据 作用为检查程序是否终止 并抛出异常
     * @param array $Params 参数列表 
     * @return string json格式的字符串
     */
    protected function jsonData($data = null)
    {
        $ResJson['code'] = 200;
        $ResJson['data'] = $data;
        $response = json_encode($ResJson, JSON_UNESCAPED_UNICODE);
        throw new \Exception($response, 200);
    }
}